package com.example.homeworkdev.fragment;


import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.homeworkdev.R;
import com.example.homeworkdev.entity.User;
import com.example.homeworkdev.pages.LoginActivity;
import com.example.homeworkdev.pages.MyInfoActivity;
import com.example.homeworkdev.util.UserInfoShared;


public class MyInfoFragment extends Fragment implements View.OnClickListener{

    View view;

    // 界面控件
    private ImageView ivAvatar;
    private TextView tvUsername, tvUserLevel, tvVersion;
    private Button btnLogin;
    private LinearLayout menuMyCollect, menuMyHistory, menuMyDownload,
            menuSettings, menuFeedback, menuAbout;

    UserInfoShared userInfoShared;

    public MyInfoFragment() {
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        if(view == null){
            view = inflater.inflate(R.layout.fragment_myinfo, container, false);
        }

        // 初始化控件
        initViews();

        // 设置点击事件
        setClickListeners();

        // 加载版本号
        loadVersionInfo();

        // 检查登录状态
        checkLoginStatus();

        return view;
    }

    private void initViews() {
        if (view == null) return;

        ivAvatar = view.findViewById(R.id.iv_avatar);
        tvUsername = view.findViewById(R.id.tv_username);
        btnLogin = view.findViewById(R.id.btn_login_myinfo);
        tvVersion = view.findViewById(R.id.tv_version);

        menuMyCollect = view.findViewById(R.id.menu_my_collect);
        menuMyHistory = view.findViewById(R.id.menu_my_history);
        menuMyDownload = view.findViewById(R.id.menu_my_download);
        menuSettings = view.findViewById(R.id.menu_settings);
        menuFeedback = view.findViewById(R.id.menu_feedback);
        menuAbout = view.findViewById(R.id.menu_about);
    }

    private void setClickListeners() {
        if (btnLogin != null) btnLogin.setOnClickListener(this);
        if (menuMyCollect != null) menuMyCollect.setOnClickListener(this);
        if (menuMyHistory != null) menuMyHistory.setOnClickListener(this);
        if (menuMyDownload != null) menuMyDownload.setOnClickListener(this);
        if (menuSettings != null) menuSettings.setOnClickListener(this);
        if (menuFeedback != null) menuFeedback.setOnClickListener(this);
        if (menuAbout != null) menuAbout.setOnClickListener(this);
    }

    private void loadVersionInfo() {
        if (getActivity() == null || tvVersion == null) return;

        try {
            PackageManager packageManager = getActivity().getPackageManager();
            PackageInfo packageInfo = packageManager.getPackageInfo(
                    getActivity().getPackageName(), 0);

            String versionName = packageInfo.versionName;
            tvVersion.setText("v" + versionName);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
    }

    private void checkLoginStatus() {
        // 从SharedPreferences存储中获取登录状态
        userInfoShared = new UserInfoShared();
        User userInfo = userInfoShared.getUserInfo(view.getContext());
        if (userInfo!=null) {
            // 已登录状态
            btnLogin.setText("退出登录");
            tvUsername.setText(userInfo.getPhone());
            // 可以在存储用户头像后来获取加载,但目前我没有设置开发上传头像功能。
        } else {
            // 未登录状态
            btnLogin.setText("登录/注册");
            tvUsername.setText("未登录");
            // 隐藏或灰化需要登录才能使用的功能
        }
    }


    public void onClick(View v) {
        int id = v.getId();

        if (id == R.id.btn_login_myinfo) {
            // 登录/退出登录逻辑
            boolean isLoggedIn = false; // 假设当前未登录
            if (isLoggedIn) {
                // 退出登录
                logout();

            } else {
                // 跳转到登录页面
                openLoginActivity();
            }
        } else if (id == R.id.menu_my_collect) {
            // 我的收藏功能
            showToast("我的收藏功能");
        } else if (id == R.id.menu_my_history) {
            // 浏览历史功能
            showToast("浏览历史功能");
        } else if (id == R.id.menu_my_download) {
            // 我的下载功能
            showToast("我的下载功能");
        } else if (id == R.id.menu_settings) {
            // 设置功能
            openSettingsActivity();
        } else if (id == R.id.menu_feedback) {
            // 意见反馈功能
            openFeedbackActivity();
        } else if (id == R.id.menu_about) {
            // 关于我们功能
            openAboutActivity();
        }
    }

    private void logout() {
        // 退出登录逻辑
        // 清除登录状态
        // 刷新界面
        userInfoShared.clearUserInfo(view.getContext());
        checkLoginStatus();
        showToast("已退出登录");
    }

    private void openLoginActivity() {
        // 跳转到登录页面的代码
        showToast("跳转到登录页面");
        //跳转登录界面
        Intent intent = new Intent(view.getContext(), LoginActivity.class);
        startActivity(intent);
    }

    private void openSettingsActivity() {
        // 跳转到设置页面的代码
        showToast("跳转到设置页面");
    }

    private void openFeedbackActivity() {
        // 跳转到意见反馈页面的代码
        showToast("跳转到意见反馈页面");
    }

    private void openAboutActivity() {
        // 跳转到关于我们页面的代码
        showToast("跳转到关于我们页面");
    }

    private void showToast(String message) {
        if (getActivity() == null) return;
        Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
    }

}